<?php

class SolicitudsController extends AppController {

    public $name = 'Solicituds';
    public $uses = array('Solicitud', 'SolicitudDetalle', 'UsuarioPerfil', 'Lavadora', );
    public $helpers = array('Html', 'Form',);
    public $components = array('Util',);

    public function index($tipo = 1) {
        if(empty($tipo) || !in_array($tipo, array(1, 2)))
            $tipo = 1;
        $perfil = $this->Util->id_decode($this->Session->read('perfil_id'));
        $campos = 'Solicitud.id, Solicitud.codigo, Solicitud.tiempo, Solicitud.estatus, Solicitud.fecha_d, Solicitud.fecha_h, Solicitud.created, Cliente.nombre, Cliente.apellido, Cliente.cedula';
        $condiciones['Solicitud.estatus >'] = 0;
        $condiciones['Solicitud.tipo'] = $tipo;
        if($perfil == 2)
            $condiciones['Solicitud.cliente_id'] = $this->Util->id_decode($this->Session->read('usuario_id'));
        $this->set('listado', $this->Solicitud->find('all', array('fields' => $campos, 'conditions' => $condiciones)));
        $this->set('tipo', $tipo);
        $this->set('estados', $this->Util->estadosProceso());
        $this->set('listadoTiempos', $this->Util->tiempos());
    }

    public function nuevo($tipo = 1) {
        if(empty($tipo) || !in_array($tipo, array(1, 2)))
            $tipo = 1;
        if ($this->request->is('post')) {
            $sumar = 0;
            $perfil_id = $this->Util->id_decode($this->Session->read('perfil_id'));
            if($perfil_id == 2)
                $this->request->data['Solicitud']['cliente_id'] = $this->Util->id_decode($this->Session->read('usuario_id'));
            else {
                if($perfil_id == 3)
                    $this->request->data['Solicitud']['usuario_id'] = $this->Util->id_decode($this->Session->read('usuario_id'));
                $this->request->data['Solicitud']['cliente_id'] = $this->Util->id_decode($this->request->data['Solicitud']['cliente_id']);
            }
            $this->request->data['Solicitud']['tipo'] = $tipo;
            $hora_d = explode(" ", $this->request->data['Solicitud']['hora_d']);
            if(strtolower(trim($hora_d[1])) == 'pm')
                $sumar = 12;
            $hora_d = trim($hora_d[0]) + $sumar . ":00";
            $this->request->data['Solicitud']['fecha_d'] .= " $hora_d";
            //$this->request->data['Solicitud']['fecha_h'] .= " {$this->request->data['Solicitud']['hora_h']}";
            if($perfil_id == 2)
                $this->request->data['Solicitud']['estatus'] = 2;
            $this->request->data['Solicitud']['tipo'] = $tipo;
            if ($this->Solicitud->save($this->request->data['Solicitud'])) {
                $lavadoras_ids = array();
                foreach($this->request->data['SolicitudDetalle'] as $indice => $valor) {
                    $this->request->data['SolicitudDetalle'][$indice]['solicitud_id'] = $this->Solicitud->id;
                    $lavadoras_ids[] = $this->request->data['SolicitudDetalle'][$indice]['lavadora_id'];
                }
                //$lavadoras_ids = implode(', ', $lavadoras_ids);
                $this->SolicitudDetalle->saveAll($this->request->data['SolicitudDetalle']);
                $this->Lavadora->updateAll(array('Lavadora.estatus' => 3), array('Lavadora.id' => $lavadoras_ids));
                $this->Solicitud->siguienteCodigo($tipo);
                $this->Session->setFlash('Registro Guardado', 'default', array('class' => 'success'));
                return $this->redirect(array('action' => "index/$tipo"));
            } else
                $this->Session->setFlash('Ocurri&oacute; un error, intente nuevamente', 'default', array('class' => 'error-message'));
        }
        
        $this->UsuarioPerfil->virtualFields['tecnico'] = 'Usuario.nombre|| \' \' || Usuario.apellido';
        $tecnicos = $this->UsuarioPerfil->find('all', array('fields' => array('Usuario.id', 'tecnico'), 'conditions' => array('Usuario.estatus' => 1, 'UsuarioPerfil.perfil_id' => 3)));
        $listadoTecnicos = array();
        foreach ($tecnicos as $valor) {
            $listadoTecnicos[$valor['Usuario']['id']] = $valor['UsuarioPerfil']['tecnico'];
        }
        $this->set('listadoTecnicos', $listadoTecnicos);
        $this->set('listadoTiempos', $this->Util->tiempos());
        $this->Lavadora->virtualFields['nombre'] = '\'(\'||Lavadora.codigo|| \') - \' || Lavadora.nombre';
        $this->set('listadoLavadoras', $this->Lavadora->find('list', array('fields' => array('Lavadora.id', 'nombre'), 'conditions' => array('Lavadora.estatus' => 1))));
        //$this->set('estados', $this->Util->estados());
        
        if($tipo == 1){
            $this->render('alquiler');
        }else{
            $this->render('reparacion');
        }
    }

    public function editar($tipo = 1, $id = null) {
        if(empty($tipo) || !in_array($tipo, array(1, 2)))
            $tipo = 1;
        $id = $this->Util->id_decode($id);
        $data = $this->Solicitud->findById($id);
        
        if (!$data) {
            $this->Session->setFlash('Registro Inv&aacute;lido', 'default', array('class' => 'error-message'));
            return $this->redirect(array('action' => 'index'));
        }

        if ($this->request->data) {
            $this->Solicitud->id = $id;
            $this->request->data['Solicitud']['id'] = $id;
            $sumar = 0;
            $perfil_id = $this->Util->id_decode($this->Session->read('perfil_id'));
            if($perfil_id == 2)
                $this->request->data['Solicitud']['cliente_id'] = $this->Util->id_decode($this->Session->read('usuario_id'));
            else {
                if($perfil_id == 3)
                    $this->request->data['Solicitud']['usuario_id'] = $this->Util->id_decode($this->Session->read('usuario_id'));
                $this->request->data['Solicitud']['cliente_id'] = $this->Util->id_decode($this->request->data['Solicitud']['cliente_id']);
            }
            $this->request->data['Solicitud']['tipo'] = $tipo;
            $hora_d = explode(" ", $this->request->data['Solicitud']['hora_d']);
            if(strtolower(trim($hora_d[1])) == 'pm')
                $sumar = 12;
            $hora_d = trim($hora_d[0]) + $sumar . ":00";
            $this->request->data['Solicitud']['fecha_d'] .= " $hora_d";
            /*if($this->Util->id_decode($this->Session->read('perfil_id')) == 2)
                $this->request->data['Solicitud']['cliente_id'] = $this->Util->id_decode($this->Session->read('usuario_id'));
            else
                $this->request->data['Solicitud']['usuario_id'] = $this->Util->id_decode($this->Session->read('usuario_id'));
            $this->request->data['Solicitud']['tipo'] = $tipo;*/
            if ($this->Solicitud->save($this->request->data)) {
                $this->Session->setFlash('Registro Actualizado', 'default', array('class' => 'success'));
                return $this->redirect(array('action' => "index/$tipo"));
            } else
                $this->Session->setFlash('Ocurri&oacute; un error, intente nuevamente', 'default', array('class' => 'error-message'));
        } else {
            $data['Solicitud']['id'] = $this->Util->id($id);
            $this->request->data = $data;
            if(!empty($this->request->data['Cliente']['apellido']))
                $this->request->data['Cliente']['nombre'] .= " {$this->request->data['Cliente']['apellido']}";
            $this->request->data['Solicitud']['cliente_id'] = $this->Util->id($this->request->data['Solicitud']['cliente_id']);
            list($fecha, $hora) = explode(" ", $this->request->data['Solicitud']['fecha_d']);
            $this->request->data['Solicitud']['fecha_d'] = $this->Util->fecha($this->request->data['Solicitud']['fecha_d']);
            $this->request->data['Solicitud']['hora_d'] = strtoupper($this->Util->hora($hora));
            $this->UsuarioPerfil->virtualFields['tecnico'] = 'Usuario.nombre|| \' \' || Usuario.apellido';
            $tecnicos = $this->UsuarioPerfil->find('all', array('fields' => array('Usuario.id', 'tecnico'), 'conditions' => array('Usuario.estatus' => 1, 'UsuarioPerfil.perfil_id' => 3)));
            $listadoTecnicos = array();
            foreach ($tecnicos as $valor) {
                $listadoTecnicos[$valor['Usuario']['id']] = $valor['UsuarioPerfil']['tecnico'];
            }
            $this->set('tipo', $tipo);
            $this->set('listadoTecnicos', $listadoTecnicos);
            $this->set('listadoTiempos', $this->Util->tiempos());
            $this->set('estados', $this->Util->estadosProceso());
            $this->Lavadora->virtualFields['nombre'] = '\'(\'||Lavadora.codigo|| \') - \' || Lavadora.nombre';
            $this->set('listadoLavadoras', $this->Lavadora->find('list', array('fields' => array('Lavadora.id', 'nombre'))));
        }
        
        if($tipo == 1){
            $this->render('alquiler_editar');
        }else{
            $this->render('reparacion_editar');
        }
    }

    function eliminar($tipo = 1, $id) {
        if(empty($tipo) || !in_array($tipo, array(1, 2)))
            $tipo = 1;
        if (!$this->request->is('post')) {
            throw new MethodNotAllowedException();
        }
        $id = $this->Util->id_decode($id);
        $this->request->data['Solicitud']['id'] = $id;
        $this->request->data['Solicitud']['estatus'] = 0;
        $this->request->data['Solicitud']['tipo'] = $tipo;
        pr($this->request->data);die();
        if ($this->Solicitud->save($this->request->data)) {
            $this->Session->setFlash('Registro Eliminado', 'default', array('class' => 'success'));
            return $this->redirect(array('action' => "index/$tipo"));
        }
    }

}
